#ifndef APPLICATION_HPP
#define APPLICATION_HPP

// std Header
#include <exception>

// SFML Header
#include <SFML/System.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <SFML/Network.hpp>
#include <SFML/Audio.hpp>

// Thor
#include <Thor/Particles.hpp>

// Eigene Header
#include <SimpleRPG/System.hpp>
#include <SimpleRPG/Window.hpp>
#include <SimpleRPG/Manager.hpp>
#include <SimpleRPG/Geometry.hpp>
#include <SimpleRPG/Graphics.hpp>

class Application
{
public:
	Application();
	virtual ~Application();

protected:
	sl::ErrorCode myErrorCode;
	sl::StatusCode myStatusCode;
	bool myIsPaused;

public:
	virtual sl::StatusCode Init();
	virtual sl::StatusCode Update(float dt);
	virtual sl::StatusCode Draw();
	virtual sl::StatusCode Event();
	virtual sl::StatusCode DebugInput();
	virtual sl::StatusCode Pause();
	virtual sl::StatusCode Quit();

public:
	unsigned short GetErrorCode();

public:
	sl::ErrorCode operator()();
};

#endif //APPLICATION_HPP